/*
 * CeldaImagen.h
 *      Author: sebastian
 */

#ifndef CELDAIMAGEN_H_
#define CELDAIMAGEN_H_
#include <gtkmm.h>
#include <gtkmm/button.h>
#include <iostream>
#include <vector>
#include <map>
#include "enumSpin.h"
#include "Jsonizable.h"
#include "DialogoProbabilidades.h"

class CeldaImagen : public Jsonizable {
private:
	Gtk::Button* boton;
	Gtk::Image* imagen;
	DialogoProbabilidades* dialogo1;
	std::map<int,int>* probabilidades;
	bool estaOK;
	bool show;
	bool esAgujero;
	bool puedeSerAgujero;

	//Incia las probabilidades en 0.
	void iniciarProbabilidades();

	//Cuando el boton es cliqueado desplega el dialogo de las probabilidades.
	//en caso de setear alguna combinacion correcta, llama a setearmeLosDatos y
	//cambiarEstado.
	void on_clicked();

	//setea los valores en el dialogo de las probabilidades.
	void setearMisDatos();

public:
	CeldaImagen(DialogoProbabilidades* dialogo1);

	~CeldaImagen();

	//devuelve el boton.
	Gtk::Button* getBoton();

	//Setea estaOK en true y se cambia la imagen.
	void cambiarEstado();

	//Devuelve un Json de la celda.
	Json::Value getJson();

	//Se setea en base a un Json pasado.
	void setJson(Json::Value&);

	//Devuelve estaOK de la celda.
	bool getEstado();

	//Devuelve true cuando la celda es un agujero.
	bool celdaEsAgujero();

	//Se setea los datos desde el dialogo de probabildiades.
	void obtenerDatosDeProbabilidades();

	//Setea que la celda no puede ser agujero.
	void noPuedeSerAgujero();

};

#endif /* CELDAIMAGEN_H_ */
